import Vue from 'vue'
import wx from 'weixin-js-sdk' // 微信sdk依赖
import { Toast } from 'vant' // 引入提示组件

const vm = new Vue() // 实例化vue
const jsApiList = ['onMenuShareAppMessage', 'onMenuShareTimeline', 'onMenuShareQQ', 'onMenuShareWeibo', 'chooseWXPay']

const getWxJsdkMethod = {
  // 配置jsdk currentUrl jumpAfterUrl
  getJsdkConfig (url) {
    // let urls = decodeURIComponent(url) || sessionStorage.getItem('currentUrl') || url || encodeURIComponent(url)
    // let urls = window.location.href.split('#')[0]
    // let userAgent = navigator.userAgent
    // let urls = ''
    // if (userAgent.includes('iPhone') || userAgent.includes('iPad')) {
    //   urls = sessionStorage.getItem('originUrl')
    // } else {
    //   urls = location.href
    // }
    // alert(sessionStorage.getItem('currentUrl'))
    vm.$api.wxLogin.getJsApiAuth({ url })
      .then(res => {
        wx.config({
          debug: false, // 开启调试模式
          appId: res.data.data.appid, // 必填，公众号的唯一标识
          timestamp: res.data.data.timestamp, // 必填，生成签名的时间戳
          nonceStr: res.data.data.noncestr, // 必填，生成签名的随机串
          signature: res.data.data.signature, // 必填，签名
          jsApiList: jsApiList // 必填，需要使用的JS接口列表
        })
        this.checkJsApi()
      })
  },
  // 检查微信的接口是否可用
  checkJsApi () {
    wx.checkJsApi({
      jsApiList: jsApiList, // 需要检测的JS接口列表，所有JS接口列表见附录2,
      success: (res) => {
        // 以键值对的形式返回，可用的api值true，不可用为false
        // 如：{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
      }
    })
  },
  // 调用微信分享接口
  getShare () {
    let title = '2020年建邺区“安全生产月”有奖知识竞答'
    let desc = '100%中奖！快来参与挑战吧！'
    let link = 'https://bonus.hopmedia.cn/dist/index.html'
    wx.ready(() => {
      wx.onMenuShareAppMessage({
        title: title, // 分享标题
        desc: desc, // 分享描述
        link: link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: 'http://qbyswxfu8.bkt.clouddn.com/%E5%8A%A8%E7%94%BB.png', // 分享图标
        type: '', // 分享类型,music、video或link，不填默认为link
        dataUrl: '', // 如果type是music或video，则要提供数据链接，默认为空
        success: (res) => {
          Toast('分享成功！')
        }
      })
      wx.onMenuShareTimeline({
        title: title, // 分享标题
        link: link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: 'http://qbyswxfu8.bkt.clouddn.com/%E5%8A%A8%E7%94%BB.png', // 分享图标
        success: (res) => {
          Toast('分享成功！')
        }
      })
    })
  },
  // 微信支付
  wxPay (data, payType, msg) {
    console.log('调起微信支付接口', data, msg)
    wx.chooseWXPay({
      timestamp: data.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
      nonceStr: data.nonceStr, // 支付签名随机串，不长于 32 位
      package: data.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）
      signType: data.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
      paySign: data.paySign, // 支付签名
      success: () => {
        // 支付成功后的回调函数
        // msg.length !== 0 ? Toast.success({ message: msg, duration: 1300 }) : ''
        if (msg.length !== 0) { Toast.success({ message: msg, duration: 1300 }) }
        console.log('微信支付成功', data)
        if (payType === 1) {
          vm.$wachtStorage('watchStorage', true)
        } else if (payType === 2) {
          vm.$wachtStorage('themePayStorage', true)
        } else {
          vm.$wachtStorage('rewardStorage', true)
        }
      },
      cancel: () => {
        // 点击取消
        vm.$wachtStorage('watchStorage', false)
      }
    })
  },
  // 加入付费圈子订单支付 创建入圈订单 , payActualAmount: ruleParams.price
  createJoinCircleOrder (ruleParams) {
    console.log('创建订单+++++++++++++++', ruleParams)
    Toast.loading({ message: '加载中...', forbidClick: true })
    vm.$api.wxLogin.postCreateJoinCircleOrder({
      changeRuleId: ruleParams.changeRuleId,
      circleId: ruleParams.circleId,
      recommendCode: ruleParams.recommendCode
    }).then(res => {
      ruleParams.ruleRadio === 1 ? this.postWxPay(res.data.data) : this.postBalance(res.data.data)
    })
  },
  // 微信支付接口
  postWxPay (orderNoParams) {
    console.log('微信支付支付++++++++')
    vm.$api.wxLogin.postCircleOrderPayWechat({ orderNo: orderNoParams.orderNo })
      .then(res => {
        let data = res.data.data
        console.log('微信支付接口返回++++++', data)
        Toast.clear()
        this.wxPay(data, 1, '')
      })
  },
  // App余额支付
  postBalance (orderNoParams) {
    console.log('app余额支付++++++++')
    vm.$api.wxLogin.postCircleOrderPayBalance({ orderNo: orderNoParams.orderNo })
      .then(res => {
        Toast.success({ message: res.data.msg, duration: 1300 })
        console.log('App余额支付结果', res)
        vm.$wachtStorage('watchStorage', true)
      })
  },
  // 主题创建订单
  createThemeOrder (themeParams) {
    console.log('创建主题订单+++++++++++++', themeParams)
    Toast.loading({ message: '加载中...', forbidClick: true })
    vm.$api.wxLogin.postCreateThemeOrder({ dynamicId: themeParams.id, payType: themeParams.radio })
      .then(res => {
        console.log(res.data.data)
        themeParams.radio === 1 ? this.postThemmWxPay(res.data.data) : this.postThemeBalancePay(res.data.data)
      })
  },
  // 主题微信支付
  postThemmWxPay (orderNoParams) {
    console.log('微信支付支付订单号++++++++', orderNoParams.orderNo)
    vm.$api.wxLogin.postThemeOrderPayWechat({ orderNo: orderNoParams.orderNo })
      .then(res => {
        let data = res.data.data
        console.log('主题微信支付接口返回++++++', data)
        Toast.clear()
        this.wxPay(data, 2, '')
      })
  },
  // 主题App余额支付
  postThemeBalancePay (orderNoParams) {
    console.log('主题余额支付订单号++++++++', orderNoParams.orderNo)
    vm.$api.wxLogin.postThemeOrderPayBalance({ orderNo: orderNoParams.orderNo })
      .then(res => {
        Toast.success({ message: res.data.msg, duration: 1300 })
        console.log('主题余额支付接口返回++++++', res)
        // this.wxPay(data, res.data.msg)
        vm.$wachtStorage('themePayStorage', true)
      })
  },
  // 创建打赏订单
  postCreateRewardOrder (RewardParams) {
    console.log('创建打赏订单+++++++++++++', RewardParams)
    vm.$api.wxLogin.postCreateRewardOrder({
      bountyType: RewardParams.bountyType,
      circleId: RewardParams.circleId,
      dynamicId: RewardParams.themeId,
      payActualAmount: RewardParams.rewarPrice
    }).then(res => {
      console.log('打赏创建接口返回结果', res.data.data)
      RewardParams.radio === 1 ? this.postRewardWxPay(res.data.data) : this.postRewardBalance(res.data.data)
    })
  },
  // 打赏主题微信支付
  postRewardWxPay (orderNoParams) {
    console.log('打赏主题微信支付订单号++++++++', orderNoParams.orderNo)
    Toast.loading({ message: '加载中...', forbidClick: true })
    vm.$api.wxLogin.postRewardWxPay({ orderNo: orderNoParams.orderNo })
      .then(res => {
        let data = res.data.data
        console.log('打赏主题微信支付接口返回++++++', data)
        Toast.clear()
        this.wxPay(data, 3, '')
      })
  },
  // 打赏主题余额支付
  postRewardBalance (orderNoParams) {
    console.log('打赏主题余额支付订单号++++++++', orderNoParams.orderNo)
    vm.$api.wxLogin.postRewardBalance({ orderNo: orderNoParams.orderNo })
      .then(res => {
        Toast.clear()
        Toast.success({ message: res.data.msg, duration: 1300 })
        console.log('打赏主题余额支付口返回++++++', res)
        // this.wxPay(data, res.data.msg)
        // vm.$wachtStorage('themePayStorage', true)
      })
  }
}
// function getJSSDK (url, dataForWeixin) {
//   let wxUrl = encodeURIComponent(url)
//   vm.$api.wxLogin.getJsApiAuth({ wxUrl })
//     .then(res => {
//       wx.config({
//         debug: true, // 开启调试模式
//         appId: res.data.data.appid, // 必填，公众号的唯一标识
//         timestamp: res.data.data.timestamp, // 必填，生成签名的时间戳
//         nonceStr: res.data.data.nonceStr, // 必填，生成签名的随机串
//         signature: res.data.data.signature, // 必填，签名
//         jsApiList: jsApiList // 必填，需要使用的JS接口列表
//       })
//       wx.ready(() => {
//         wx.
//       })
//     })
// }

export default {
  getWxJsdkMethod
}
